A multi-threaded processor supports simultaneous execution of multiple distinct instruction sequences or threads. A thread is a stream of instructions associated with a sequence of code that has been scheduled within the multi-threaded processor. Threads being simultaneously executed by a multi-threaded processor generally share computing resources (such as execution units) of the multi-threaded processor. Although computing resources of a multi-threaded processor are shared by multiple threads, a multi-threaded processor may include multiple sets of hardware, such as a program counter and other registers, to support multiple threads. In such a case, a set of hardware is dedicated to each thread and is not shared by any other thread. Thread-specific hardware may allow a multi-threaded processor to quickly and easily switch between threads. To switch from one thread to another thread, a multi-threaded processor would switch from using one set of hardware to another set of hardware. Using dedicated, thread-specific hardware may allow each thread to simultaneously progress through its instruction sequence as much as possible. When a multi-threaded processor is executing a single thread, the processor generally uses only one of the dedicated sets of hardware. The additional dedicated sets of hardware are not used during execution of the single thread.